Amazon Bedrock Marketplace でモデルをデプロイしてみた

Amazon Bedrock Marketplace でモデルをデプロイしてみた

Clock Icon2024.12.31

こんにちは!AWS 事業本部コンサルティング部のたかくに(@takakuni_)です。

Amazon Bedrock Maketplace が re:Invent 2024 で登場しました。

https://dev.classmethod.jp/articles/amazon-bedrock-marketplace-reinvent2024/

当時、モデルをデプロイするところで Service Quotas に引っかかってたため、デプロイしてみたブログになります。

Amazon Bedrock Maketplace 使ってみたい!という方は、このブログを読む前に申請あげておくことをオススメします。

Amazon Bedrock Marketeplace

説明が先ほどのブログと重複しますが、大事なことなのでもう 1 回。

Amazon Bedrock Marketplace は従来提供されていた Anthropic, Cohere, Meta などの主要ベンダーに加えて、 Bedrock 上で 3rd Party のモデルを利用できる機能です。対象のモデルをサブスクライブ、デプロイすることで、Bedrock の推論 API を SageMaker エンドポイント経由で実行できるようになります。

デプロイしたモデルが Converse API と互換性があるモデルの場合は、Amazon Bedrock Agents、Amazon Bedrock Knowledge Bases などの周辺機能と統合できる部分もポイントです。

Bring your own endpoint

今回の Amazon Bedrock Marketeplace は Marketplace deployments を利用してモデルのデプロイを行います。

この deployments なのですが、SageMaker JumpStart 経由でデプロイしたモデルも登録可能なようです。

https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-marketplace-bring-your-own-endpoint.html

https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-use-studio-updated-register-bedrock.html

やってみる

モデルのクォーター申請が完了している前提でコンソールからデプロイを行います。

モデルサブスクライブ

まずは 3rd Patry 製品を利用するため、サブスクライブから始まります。

2024-12-31 at 11.54.02-Amazon Bedrock  ap-northeast-1.png

この際、契約を組み交わすことになるのですが、商用のモデルの場合は**モデルを動かすインスタンスの料金に加えて、**ライセンス費用が発生します。モデルを動かすインスタンスの料金が別途発生するため、ご注意ください。(私は後続の手順にあるモデルのデプロイを行ってしまったため、後戻りができず必死にブログを書いています。)

2024-12-31 at 11.54.29-Amazon Bedrock  ap-northeast-1.png

Subscribed になって入れば OK です。Amazon Bedrock のモデルサブスクライブと同じようなイメージを持っていただくと良いのではないかと思います。

2024-12-31 at 11.55.30-Amazon Bedrock  ap-northeast-1.png

モデルのデプロイ

それではモデルのデプロイを行います。(実際には事後ですが。)

先ほどのモデルカタログの画面から Deploy を行います。

2024-12-31 at 11.55.30-Amazon Bedrock  ap-northeast-1.png

Marketplce Deployments に遷移しモデルのデプロイ画面になりました。モデルのインスタンス数、インスタンスタイプが選択できるようになっていますね。

今回は以下を選択しました。

  • インスタンス数:1
  • インスタンスタイプ:ml.g6.48xlarge (recommended)

2024-12-31 at 11.56.00-Amazon Bedrock  ap-northeast-1.png

Advanced Settings として VPC Settings や IAM ロールの指定ができます。今回は No VPC の IAM ロールは自動でどのようなロールが作成されるか確認してみます。

2024-12-31 at 11.56.16-Amazon Bedrock  ap-northeast-1.png

確認して問題なければ Deploy をクリックします。これでインスタンスが立ち上がります。

2024-12-31 at 12.03.14-Amazon Bedrock  ap-northeast-1.png

モデルデプロイメントの画面で先ほど作成したモデルが出てきましたね。

2024-12-31 at 12.06.06-Amazon Bedrock  ap-northeast-1.png

数分待つとステータスが In Service に変わりました。

2024-12-31 at 12.41.11-Amazon Bedrock  ap-northeast-1@2x.png

サービスロールの IAM ポリシーを確認します。

  • アカウント ID が異なる AWS 所有のアカウントが 3 個ありクロスアカウントで資材を持ってきていました
  • その他 SageMaker のログを保管するためのポリシーがついてますね
{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Effect": "Allow",
			"Action": ["s3:GetObject", "s3:ListBucket"],
			"Resource": [
				"arn:aws:s3:::jumpstart-cache-prod-ap-northeast-1",
				"arn:aws:s3:::jumpstart-cache-prod-ap-northeast-1/*"
			],
			"Condition": {
				"StringEquals": {
					"aws:ResourceAccount": "AWS_OWNED_ACCOUNT_ID_1"
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"logs:CreateLogStream",
				"logs:PutLogEvents",
				"logs:CreateLogGroup",
				"logs:DescribeLogStreams"
			],
			"Resource": [
				"arn:aws:logs:ap-northeast-1:DEPLOYMRNT_ACCOUNT_ID:log-group:/aws/sagemaker/Endpoints/karakuri-lm-8x7b-instruct",
				"arn:aws:logs:ap-northeast-1:DEPLOYMRNT_ACCOUNT_ID:log-group:/aws/sagemaker/Endpoints/karakuri-lm-8x7b-instruct:*"
			]
		},
		{
			"Effect": "Allow",
			"Action": "cloudwatch:PutMetricData",
			"Resource": "*",
			"Condition": {
				"StringEquals": {
					"cloudwatch:Namespace": ["AWS/SageMaker", "/aws/sagemaker/Endpoints"]
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": ["ecr:GetAuthorizationToken"],
			"Resource": "*"
		},
		{
			"Effect": "Allow",
			"Action": [
				"ecr:BatchCheckLayerAvailability",
				"ecr:BatchGetImage",
				"ecr:GetDownloadUrlForLayer"
			],
			"Resource": "arn:aws:ecr:ap-northeast-1:*:repository/*",
			"Condition": {
				"StringEquals": {
					"aws:ResourceAccount": [
						"AWS_OWNED_ACCOUNT_ID_2",
						"AWS_OWNED_ACCOUNT_ID_3"
					]
				}
			}
		}
	]
}

プレイグランドで試してみる

サンプルを参考にプロンプトを投げてみました。

うまく動いています。 Input, Output ですがトークンによる課金はないため、 - となっていますね。

2024-12-31 at 13.01.02-Amazon Bedrock  ap-northeast-1@2x.png

モデルによっては Converse API にサポートしているようです。今回は KARAKURI LM 8x7b instruct を利用したためサポートしていなかったですが、要チェックですね。

https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-marketplace-model-reference.html

モデルのログですが InvokeModel で記録されていますね。

ModelInvocationLog.json
{
	"schemaType": "ModelInvocationLog",
	"schemaVersion": "1.0",
	"timestamp": "2024-12-31T04:00:56Z",
	"accountId": "123456789012",
	"identity": {
		"arn": "arn:aws:sts::123456789012:assumed-role/takakuni/takakuni"
	},
	"region": "ap-northeast-1",
	"requestId": "1dd8d6b7-492e-4fd7-a582-833acfe668ee",
	"operation": "InvokeModel",
	"modelId": "arn:aws:sagemaker:ap-northeast-1:123456789012:endpoint/karakuri-lm-8x7b-instruct",
	"input": {
		"inputContentType": "application/json",
		"inputBodyJson": {
			"inputs": "<|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|>あなたは親切なアシスタントです。<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|USER_TOKEN|>良いお年を!<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|><attributes>helpfulness: 4 correctness: 4 coherence: 4 complexity: 4 verbosity: 4 quality: 4 toxicity: 0 humor: 0 creativity: 0</attributes>",
			"parameters": {
				"max_new_tokens": 256,
				"stop": [],
				"temperature": 1,
				"top_p": 0.9,
				"top_k": null
			}
		}
	},
	"output": {
		"outputContentType": "application/json",
		"outputBodyJson": {
			"generated_text": "<|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|>あなたは親切なアシスタントです。<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|USER_TOKEN|>良いお年を!<|END_OF_TURN_TOKEN|><|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|><attributes>helpfulness: 4 correctness: 4 coherence: 4 complexity: 4 verbosity: 4 quality: 4 toxicity: 0 humor: 0 creativity: 0</attributes> あなたも、良いお年をお迎えください!もし何かお手伝いできることがあれば、遠慮なくご相談ください。"
		}
	}
}

リソース削除

最後にリソース削除です。モデルエンドポイントから対象モデルを選択し削除を行います。

2024-12-31 at 13.01.55-Amazon Bedrock  ap-northeast-1@2x.png

削除は比較的数秒で終わりました。最近このワンちゃんが個人的に好みです。

2024-12-31 at 13.16.59-Amazon Bedrock  us-east-1@2x.png

念の為 SageMaker のエンドポイントも確認しましょう。削除されていますね。

2024-12-31 at 13.02.33-Amazon SageMaker AI  ap-northeast-1@2x.png

エンドポイント設定やモデルも不要であれば削除しておきましょう。

2024-12-31 at 13.02.26-Amazon SageMaker AI  ap-northeast-1@2x.png

2024-12-31 at 13.20.06-Amazon SageMaker AI  ap-northeast-1@2x.png

参考

https://aws.amazon.com/jp/blogs/news/meet-foundation-model-on-amazon-bedrock-marketplace/

https://aws.amazon.com/jp/blogs/news/amazon-bedrock-marketplace-access-over-100-foundation-models-in-one-place/

まとめ

以上、「Amazon Bedrock Marketplace でモデルをデプロイしてみた」でした。

執筆時点でカスタムモデルインポートが使えない東京リージョンで日本語 LLM がマネージドなインスタンスで動いているのは嬉しいですね。

このブログがどなたかの参考になれば幸いです。AWS 事業本部コンサルティング部のたかくに(@takakuni_)でした!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.